# coding: utf-8

"""
* 定义函数时，可以给 某个参数 指定一个默认值，具有默认值的参数就叫做 缺省参数
* 调用函数时，如果没有传入 缺省参数 的值，则在函数内部使用定义函数时指定的 参数默认值
* 函数的缺省参数，将常见的值设置为参数的缺省值，从而 简化函数的调用
"""

# 1.例如sort方法,其中有一个reverse参数默认值为False
gl_list = [1, 9, 2, 8, 3, 7, 4, 6, 5]

# 默认升序
gl_list.sort()
print(gl_list)
# 降序，需要指定reverse参数为True
gl_list.sort(reverse=True)
print(gl_list)


# 2.指定函数的缺省参数，只需要在参数后使用赋值语句，指定参数的缺省值
def print_info(name, gender=True):
    """
    这个函数指定了gender的默认值为True
    :param name:姓名
    :param gender:True男 False女
    :return:
    """
    gender_text = "男"
    if not gender:
        gender = ~gender
        gender_text = "女"

    print(name, gender_text)


print_info("YDD")  # 不传性别，默认男生
print_info("XHH", gender=False)

"""
缺省参数的注意事项

1) 缺省参数的定义位置
* 必须保证 带有默认值的缺省参数 在参数列表末尾
* 所以，以下定义是错误的！
def print_info(name, gender=True, title):

2) 调用带有多个缺省参数的函数时必须指定参数名

* 在 调用函数时，如果有 多个缺省参数，需要指定参数名，
  这样解释器才能够知道参数的对应关系！
"""